package com.t.bricks.bussiness.db.mapper.userandright;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.t.bricks.bussiness.db.entity.userandright.SimpleRight;
import com.t.bricks.bussiness.db.entity.userandright.UserAndRightSimpl;
import com.t.bricks.bussiness.db.entity.userandright.UserRightInfo;

@Mapper
public interface UserAndRightMapper {

	/**
	 * 清理已经废弃的信息
	 * @return
	 */
	int delDiscard();
	
	/**
	 * 查找指定用户的与权限关联的信息数量
	 * @param sUserId
	 * @return
	 */
	int findCountByUserId(@Param("sUserId") String sUserId);
	
	/**
	 * 批量添加用户与权限的关联信息
	 * @param sUserId
	 * @param list
	 * @param sCreator
	 * @return
	 */
	int add(
		@Param("sUserId") String sUserId,
		@Param("list") List<String> list,
		@Param("sCreator") String sCreator
	);
	
	/**
	 * 删除指定用户所有与权限关联信息
	 * @param sUserId
	 * @return
	 */
	int del(@Param("sUserId") String sUserId);
	
	/**
	 * 根据用户编号获取与权限关联的信息
	 * @param sUserId
	 * @return
	 */
	List<UserAndRightSimpl> findByUserId(@Param("sUserId") String sUserId);

	/**
	 * 根据用户编号查询用户权限
	 * 注意：关联角色权限表、用户权限表、用户与角色权限表
	 * @param sLoginUserId
	 * @return
	 */
	List<UserRightInfo> findRightInfoByUser(@Param("sLoginUserId") String sLoginUserId);

	/**
	 * 根据用户查询用户所拥有的权限编号集合
	 * @param sUserId
	 * @return
	 */
	List<String> findRightId(@Param("sUserId") String sUserId);

	/**
	 * 初始化查询权限信息
	 * @param sUserId
	 * @return
	 */
	List<SimpleRight> findRightListByInit(@Param("sUserId") String sUserId);

	/**
	 * 获取所有权限信息
	 * @return
	 */
	List<SimpleRight> findRightAll();
	
}
